/**
 * \file IStmtVisitor.h
 *
 *  Created on: Mar 21, 2011
 *      @author: calle
 */

#ifndef STMTVISITOR_H_
#define STMTVISITOR_H_

class StmtList;
class Declaration;
class Assignment;

/**
 * \class IStmtVisitor IStmtVisitor.h <Interfaces/IStmtVisitor.h>
 *
 * \brief visitor Interface for abstract syntax tree
 *
 * By implementing this interface, its possible to see what statement it is..
 * @TODO needs to provide more information on this one...
 *
 * \ingroup Interfaces
 */

class IStmtVisitor {
public:
	virtual ~IStmtVisitor()=0;

	/***
	 * @brief VisitStmList
	 * @see StmtList
	 */
	virtual void VisitStmList(StmtList *p) = 0;

	/**
	 * \brief will be called if statement is of type Assignment.
	 *
	 */
	virtual void VisitDeclaration(Declaration *p) =0;

	virtual void VisitAssignment(Assignment *p) =0;


};


#endif /* VISITOR_H_ */
